home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Fritz: All Fritz
/
All Fritz.zip
/
All Fritz
/
FILES
/
UTILFILE
/
TWNCOPY.LZH
/
HACK.ASM
< prev
next >
Wrap
Assembly Source File
|
1986-05-06
|
2KB
|
72 lines
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; HACK.ASM - program to intercept writes to disk A. Allows write command
; to proceed normally, but always return with no errors.
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
CODE SEGMENT
ASSUME cs:CODE,ds:CODE,es:nothing
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
org 0100h ; this will be a .com program
;
install:
call save_isrs ; save current interrupt service routines
call set_isrs ; set new interrupt services
mov dx,offset last_adr+1 ; terminate and stay resident
int 27h
;
int13 proc far
cmp ah,3 ; is this a write operation ?
jne int_cont ; no, continue...else
cmp dl,0 ; is it to drive a: ?
jne int_cont ; no, continue...else
pushf ; do diskette BIOS call
call cs:[old_diskrtn] ; (simulate interrupt)
xor ah,ah ; set to no errors
clc
ret 2 ; throw away saved flags
;
int_cont:
jmp cs:[old_diskrtn]
int13 endp
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; save_isrs - save current interrupt service routine addresses for diskette
; interrupt (13h)
;
save_isrs proc near
mov al,13h ; get current diskette interrupt
mov ah,35h ; pointer using DOS call
int 21h
mov word ptr old_diskrtn,bx ; save offset
mov word ptr old_diskrtn[2],es ; and segment
ret
save_isrs endp
;
old_diskrtn dd ? ; reserve space for original disk isr
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; set_isrs - set new service routine for diskette interrupt
;
set_isrs proc near
mov dx,offset int13 ; set new diskette routine
mov al,13h ; isr for interrupt 13
mov ah,25h
int 21h
ret
set_isrs endp
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
last_adr db 0
;
CODE ENDS
;
end install